package JavaBaseGrammar;

public class BaseDataType {
    public static void main(String[] args) {

//        在Java中数据类型主要分为两类：基本数据类型和引用数据类型。
//        基本数据类型有四类八种：
//        1. 四类：整型、浮点型、字符型以及布尔型
//        2. 八种：
//        字节型      byte      1字节
//        短整形      short     2字节
//        整形        int       4字节
//        长整型      long      8字节
//        单精度浮点数  float     4字节
//        双精度浮点数  double    8字节
//        字符型       char      2字节
//        布尔型       boolean   没确定

        /*int a = 10; // 定义整形变量a，a是变量名也称为标识符，该变量中放置的值为10
        double d = 3.14;
        char c = 'A';
        boolean b = true;
        System.out.println(a);
        System.out.println(d);
        System.out.println(c);
        System.out.println(b);
        //Shift+fn+f10是运行快捷键
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);

        long e = 10L; // 为了区分int和long类型，一般建议：long类型变量的初始值之后加L或者l
       TODO long f = 10l; // 一般更加以加大写L，因为小写l与1不好区分
        */
        //TODO 在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.5, 需要使用 double 类型计算.

//        float a = 12.6f;
//        //. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法
//        //自动转,把小的放在大的里面没问题
//        System.out.println(a);
//        //强制转,把大的放在小的里面要强转
//        short b = 1;
//        int c = 3;
//        b = (short)c;
//        System.out.println(b);

        //不同类型的数据之间相互运算时，数据类型小的会被提升到数据类型大的。
//        int a = 10;
//        long b = 20;
//        int c = a + b; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据
//        long d = a + b; // 编译成功：a + b==>int + long--->long + long 赋值给long

//        byte a = 10;
//        byte b = 20;
//        byte c = a + b;
//        System.out.println(c);
/*结论: byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算*/
        /*【类型提升小结:】
1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算*/
        // String 转成 int
        String str = "100";
        int num1 = Integer.parseInt(str);
        //int 转成 String
        int num = 10;
// 方法1
        String str1 = num + "";
// 方法2
        String str2 = String.valueOf(num);

    }
}
